name_dict = {
    0: {'cfg_otp_flag': {'position': 7, 'length': 8}},
    1: {'trim_iref': {'position': 5, 'length': 6},
        'cfg_vpphon': {'position': 6, 'length': 1},
        'bytel_spare': {'position': 7, 'length': 1}},
    2: {'trim_vpph': {'position': 3, 'length': 4},
        'trim_vbgr_temp': {'position': 7, 'length': 4}},
    3: {'trim_vrefglb': {'position': 3, 'length': 4},
        'trim_vneg': {'position': 7, 'length': 4}},
    4: {'trim_ilmt_reset': {'position': 3, 'length': 4},
        'trim_omoclk': {'position': 7, 'length': 4}},
    5: {'cfg_max_set_pulse_num': {'position': 3, 'length': 4},
        'cfg_max_reset_pulse_num': {'position': 7, 'length': 4}},
    6: {'cfg_max_forming_pulse_num': {'position': 3, 'length': 4},
        'cfg_clk_ready': {'position': 7, 'length': 4}},
    7: {'cfg_write_mode': {'position': 1, 'length': 2},
        'tiref_change': {'position': 6, 'length': 5},
        'cfg_vsl_sw': {'position': 7, 'length': 1}},
    8: {'trim_sa_iref_rd': {'position': 7, 'length': 8}},
    9: {'trim_sa_iref_set': {'position': 7, 'length': 8}},
    10: {'trim_sa_iref_reset': {'position': 7, 'length': 8}},
    11: {'trim_sa_iref_form': {'position': 7, 'length': 8}},
    12: {'trim_read_delay': {'position': 7, 'length': 8}},
    13: {'trim_read_delay': {'position': 3, 'length': 4},
         'trim_sa_ota': {'position': 7, 'length': 4}},
    14: {'trim_vppyrd': {'position': 6, 'length': 7},
         'tm_dis_en_disable': {'position': 7, 'length': 1}},
    15: {'trim_vppy_forming_max': {'position': 5, 'length': 6},
         'cfg_vunsel_sel': {'position': 7, 'length': 2}},
    16: {'trim_vppy_set_max': {'position': 5, 'length': 6},
         'cfg_readen_trim': {'position': 7, 'length': 2}},
    17: {'trim_vppy_reset_max': {'position': 5, 'length': 6},
         'byte11_spare': {'position': 7, 'length': 2}},
    18: {'trim_vppy_forming_step': {'position': 2, 'length': 3},
         'trim_vppy_set_step': {'position': 4, 'length': 2},
         'trim_vppy_reset_step': {'position': 7, 'length': 3}},
    19: {'trim_vppy_forming': {'position': 5, 'length': 6},
         'byte13_spare': {'position': 7, 'length': 2}},
    20: {'trim_vppy_set': {'position': 5, 'length': 6},
         'byte14_spare': {'position': 7, 'length': 2}},
    21: {'trim_vp': {'position': 5, 'length': 6},
         'byte15_spare': {'position': 7, 'length': 2}},
    22: {'trim_vwl_forming': {'position': 5, 'length': 6},
         'cfg_clmt_dis_reset': {'position': 6, 'length': 1},
         'cfg_clmt_dis_set': {'position': 7, 'length': 1}},
    23: {'trim_vwl_set': {'position': 5, 'length': 6},
         'cfg_vnegpmp_set_add1': {'position': 6, 'length': 1},
         'cfg_vnegpmp_set_add2': {'position': 7, 'length': 1}},
    24: {'trim_vwl_reset': {'position': 5, 'length': 6},
         'cfg_vnegpmp_reset_add1': {'position': 6, 'length': 1},
         'cfg_vnegpmp_reset_add2': {'position': 7, 'length': 1}},
    25: {'trim_vwl_read': {'position': 5, 'length': 6},
         'cfg_vnegpmp_forming_add1': {'position': 6, 'length': 1},
         'cfg_vnegpmp_forming_add2': {'position': 7, 'length': 1}},
    26: {'trim_ilmt_set_bit4': {'position': 1, 'length': 1},
         'cfg_slice_mask_en': {'position': 2, 'length': 1},
         'cfg_block_mask_en': {'position': 3, 'length': 1},
         'trim_ilmt_set': {'position': 7, 'length': 4}},
    27: {'trim_clk': {'position': 5, 'length': 6},
         'cfg_wen_delay': {'position': 7, 'length': 2}},
    28: {'tpump_setup': {'position': 7, 'length': 8}},
    29: {'tpump_disch': {'position': 7, 'length': 8}},
    30: {'tsa_ota_saen': {'position': 3, 'length': 4},
         'tsa_saen_cmp': {'position': 7, 'length': 4}},
    31: {'tsa_cmp_lat': {'position': 3, 'length': 4},
         'twl_disch': {'position': 5, 'length': 2},
         'tbsl_disch': {'position': 7, 'length': 2}},
    32: {'tpw_set': {'position': 7, 'length': 8}},
    33: {'tpw_reset': {'position': 7, 'length': 8}},
    34: {'tpw_forming': {'position': 7, 'length': 8}},
    35: {'tpw_set_step': {'position': 4, 'length': 5},
         'tbsl_pre': {'position': 6, 'length': 2},
         'byte23_spare': {'position': 7, 'length': 1}},
    36: {'tpw_reset_step': {'position': 4, 'length': 5},
         'byte24_spare': {'position': 7, 'length': 3}},
    37: {'tpw_forming_step': {'position': 4, 'length': 5},
         'cfg_error_limit': {'position': 6, 'length': 2},
         'byte25_spare': {'position': 7, 'length': 1}},
    38: {'twl_pre': {'position': 4, 'length': 5},
         'byte26_spare': {'position': 7, 'length': 3}},
    39: {'trim_rep2': {'position': 3, 'length': 4},
         'trim_rep3': {'position': 7, 'length': 4}},
    40: {'trim_rep4': {'position': 3, 'length': 4},
         'trim_rep5': {'position': 7, 'length': 4}},
    41: {'tm_pat_icell_sel_bit': {'position': 7, 'length': 8}},
    42: {'tm_icell_sel_byte': {'position': 5, 'length': 6},
         'tm_clk_ext_en': {'position': 6, 'length': 1},
         'tm_vbl_both_dis': {'position': 7, 'length': 1}},
    43: {'tm_vmon_sel': {'position': 3, 'length': 4},
         'tm_vbgrext_en': {'position': 4, 'length': 1},
         'tm_irefsaext_en': {'position': 5, 'length': 1},
         'byte43_spare': {'position': 6, 'length': 1},
         'tm_pmposcon': {'position': 7, 'length': 1}},
    44: {'tm_vnegdis': {'position': 0, 'length': 1},
         'tm_vpphdis': {'position': 1, 'length': 1},
         'tm_vrefvppy2vcc': {'position': 2, 'length': 1},
         'tm_vwl2vcc': {'position': 3, 'length': 1},
         'tm_clkmon': {'position': 4, 'length': 1},
         'tm_pmpclkmon': {'position': 5, 'length': 1},
         'tm_vrefvwl2vcc': {'position': 6, 'length': 1},
         'tm_vrefvppyrd2vdd': {'position': 7, 'length': 1}},
    45: {'tm_sa_out': {'position': 0, 'length': 1},
         'tm_vbl_ext': {'position': 1, 'length': 1},
         'tm_isa_mon': {'position': 2, 'length': 1},
         'tm_iota_mon': {'position': 3, 'length': 1},
         'tm_vblrd_mon': {'position': 4, 'length': 1},
         'tm_ota_cur': {'position': 6, 'length': 2},
         'tm_bypass_reset': {'position': 7, 'length': 1}},
    46: {'tm_icell_en': {'position': 0, 'length': 1},
         'tm_enc_bypass': {'position': 1, 'length': 1},
         'tm_dec_bypass': {'position': 2, 'length': 1},
         'tm_ecc_through': {'position': 3, 'length': 1},
         'tm_ecc_bypass': {'position': 4, 'length': 1},
         'tm_spi_testmode': {'position': 5, 'length': 1},
         'tm_spi_forming': {'position': 6, 'length': 1},
         'tm_spi_otp_addr': {'position': 7, 'length': 1}},
    47: {'tm_ext_int': {'position': 2, 'length': 3},
         'tm_force_setvry_fail': {'position': 3, 'length': 1},
         'tm_force_rstvry_fail': {'position': 4, 'length': 1},
         'tm_ireftrim_sel': {'position': 6, 'length': 2},
         'tm_spi_rdout_en': {'position': 7, 'length': 1}},
    48: {'tm_spi_rd_high_addr': {'position': 7, 'length': 8}},
    49: {'tm_spi_rd_low_addr': {'position': 7, 'length': 8}},
    50: {'tm_actall': {'position': 3, 'length': 4},
         'tm_wldisch': {'position': 4, 'length': 1},
         'tm_wlvss': {'position': 6, 'length': 2},
         'tm_bldisch_dis': {'position': 7, 'length': 1}},
    51: {'tm_rep0': {'position': 3, 'length': 4},
         'tm_rep1': {'position': 7, 'length': 4}},
    52: {'tm_rep2': {'position': 3, 'length': 4},
         'tm_rep3': {'position': 7, 'length': 4}},
    53: {'tm_rep4': {'position': 3, 'length': 4},
         'tm_rep5': {'position': 7, 'length': 4}},
    54: {'tm_spi_fsm_state': {'position': 6, 'length': 7},
         'byte36_spare ': {'position': 7, 'length': 1}},
    55: {'tm_spi_status_reg': {'position': 7, 'length': 8}},

}

test_dict = {
    2: {'trim_vpph': {'position': 3, 'length': 4, 'data': 12 },
        'trim_vbgr_temp': {'position': 7, 'length': 4, 'data': 10}},
}


if __name__ == '__main__':

    name_dict = test_dict
    for byteNo, regName_dict in name_dict.items():
        byteHex = ['0'] * 8  # Initialize byteHex as a list of '0's
        for regName, regName_data in regName_dict.items():
            position, length = regName_data['position'], regName_data['length']
            data = f"{regName_data['data']:0{length}b}"  # Convert data to binary with fixed length
            start = position - length + 1
            byteHex[start:start + length] = data  # Slice assignment for updating the byteHex
        final_hex = f"{int(''.join(byteHex), 2):02X}"
        regName_dict['value'] = final_hex
    print(name_dict)

    print(1)
